/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package eu.epfc.dnet.mastermind.services;

import eu.epfc.dnet.mastermind.hibernate.TgamesHelper;
import eu.epfc.dnet.mastermind.hibernate.TlinesHelper;
import eu.epfc.dnet.mastermind.hibernate.TusersHelper;
import org.springframework.stereotype.Service;

/**
 *
 * @author Pierre Buvé & Nicolas Van Damme
 */
@Service
public class StatsManager {

    TusersHelper tusersHelper;
    TgamesHelper tgamesHelper;
    TlinesHelper tlinesHelper;

    
    /**
     * Retourne le premier utilisateur enregisté.
     * @return 
     */
    public String getFirstUser() {
        tusersHelper = new TusersHelper();
        String result = "";
        result = tusersHelper.getFirstUser();
        return result;
    }
    
    /**
     * Retourne le dernier utilisateur enregistré.
     * @return 
     */
    public String getLastUser() {
        tusersHelper = new TusersHelper();
        String result = "";
        result = tusersHelper.getLastUser();
        return result;
    }
    
    /**
     * Retourne le nombre d'utilisateur enregistré.
     * @return 
     */
    public String getNbrUser() {
        tusersHelper = new TusersHelper();
        String result = "";
        result = tusersHelper.getNbrUser();
        return result;
    }

    /**
     * Retourne le nombre total de partie. 
     * @return 
     */
    public String getNbrAllGame() {
        tgamesHelper = new TgamesHelper();
        String result = "";
        result = tgamesHelper.getNbrAllGame();
        return result;
    }

    /**
     * Retourne le nombre de victoires.
     * @return 
     */
    public String getNbrVictory() {
        tgamesHelper = new TgamesHelper();
        String result = "";
        result = tgamesHelper.getNbrVictory();
        return result;     
    }

    /**
     * Retourne le nombre de défaite.
     * @return 
     */
    public String getNbrDefeat() {
        tgamesHelper = new TgamesHelper();
        String result = "";
        result = tgamesHelper.getNbrDefeat();
        return result;    
    }

    /**
     * Retourne le nombre de nouvelles parties.
     * @return 
     */
    public String getNbrNew() {
        tgamesHelper = new TgamesHelper();
        String result = "";
        result = tgamesHelper.getNbrNew();
        return result;   
    }

    /**
     * Retourne le nombre de parties en cours.
     * @return 
     */
    public String getNbrPlaying() {
        tgamesHelper = new TgamesHelper();
        String result = "";
        result = tgamesHelper.getNbrPlaying();
        return result;  
    }

    /**
     * Retourne le nombre de fois que la couleur envoyer comme paramètre est sortie dans une solution
     * @param couleur
     * @return 
     */
    public String getNbrCouleurDsSolution(String couleur) {
        tgamesHelper = new TgamesHelper();
        String result = "";
        result = tgamesHelper.getNbrCouleurDsSolution(couleur);
        return result;  
    }

    /**
     * Retourne le temps maximum, toute partie confondue.
     * @return 
     */
    public String getMaxTime() {
        tgamesHelper = new TgamesHelper();
        String result = "";
        result = secToTime(tgamesHelper.getMaxTime());
        return result; 
    }

    /**
     * Transforme un int (nombres de secondes) en HH:MM:SS et le retourne sous forme de String
     * @param sec
     * @return 
     */
    private String secToTime(int sec){
        String resultS;
        String resultM;
        String resultH;
        if(sec%60<10){resultS = "0"+sec%60;}
        else{resultS = String.valueOf(sec%60);}
        
        if((sec/60)%60<10){resultM = "0"+(sec/60)%60;}
        else{resultM = String.valueOf((sec/60)%60);}
        
        if(sec/(60*60)<10){resultH = "0"+sec/(60*60);}
        else{resultH = String.valueOf(sec/(60*60));}

        return resultH+":"+resultM+":"+resultS;
    }
}
